package Dominio;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import Persistencia.AgenteBD;
import Presentacion.MenuPrincipal;

public class AgenteTest {
	
	public ArrayList<Test> consultaTest(){
		Test testRet = null;
		String sentence="SELECT * FROM test;";
		
		ArrayList<Test> testLista= new ArrayList<Test>();
		try {
			ResultSet rs= AgenteBD.getInstance().executeQuery(sentence);
			while(!rs.isLast()){
				rs.next();
				testRet=new Test(rs.getString(1),rs.getInt(2),rs.getInt(3),rs.getInt(4),rs.getInt(5),rs.getInt(6),rs.getInt(7),rs.getInt(8), rs.getInt(9));
				testLista.add(testRet);
				
			}
		}catch (SQLException e) {
			e.printStackTrace();
		}
		
		return testLista;
	}
	
	public Test consultaTestEspecifico(String DNI){
		Test testRet = null;
		String sentence="SELECT * FROM test WHERE DNI='"+DNI+"';";
		
		try {
			ResultSet rs= AgenteBD.getInstance().executeQuery(sentence);
			rs.first();
			testRet=new Test(rs.getString(1),rs.getInt(2),rs.getInt(3),rs.getInt(4),rs.getInt(5),rs.getInt(6),rs.getInt(7),rs.getInt(8), rs.getInt(9));
							
		}catch (SQLException e) {
			e.printStackTrace();
		}
		
		return testRet;
	}
	
	public Usuario comprobarAfinidad(Test testComparar, ArrayList<Test> listaTest){
		double pCompatibilidad= 0.0;
		int preguntasIguales= 0;
		String DNICita = "";
		double pCompatibilidadMayor= 0.0;
		
		for(int i=0;i<listaTest.size();i++){
			if(!listaTest.get(i).getDNI().equals(MenuPrincipal.DNI)){
				if(listaTest.get(i).getP1() == testComparar.getP1())
					preguntasIguales++;
				if(listaTest.get(i).getP2() == testComparar.getP2())
					preguntasIguales++;
				if(listaTest.get(i).getP3() == testComparar.getP3())
					preguntasIguales++;
				if(listaTest.get(i).getP4() == testComparar.getP4())
					preguntasIguales++;
				if(listaTest.get(i).getP5() == testComparar.getP5())
					preguntasIguales++;
				if(listaTest.get(i).getP6() == testComparar.getP6())
					preguntasIguales++;
				if(listaTest.get(i).getP7() == testComparar.getP7())
					preguntasIguales++;
				if(listaTest.get(i).getP8() == testComparar.getP8())
					preguntasIguales++;
				
				pCompatibilidad= preguntasIguales/8.0;
				
				if (pCompatibilidad > pCompatibilidadMayor){
					pCompatibilidadMayor= pCompatibilidad;
					DNICita= listaTest.get(i).getDNI();
				}
			}
			preguntasIguales=0;
		}
		
		AgenteUsuario agentuser= new AgenteUsuario();
		Usuario userRet= agentuser.consultUsuario(DNICita);
		
		return userRet;
	}
}
